package 链表;

/**
 * @author aodre , QQ : 480029069
 * @date 2023/4/4 21:28
 */
public class leetcode160相交链表 {
        /*
         直接 看 看评论区， 就行了！
         果然是可以从链表的长度入手的！
         ：
         
         一语 惊醒梦中人：
         若相交，链表A： a+c, 链表B : b+c. a+c+b+c = b+c+a+c 。则会在公共处c起点相遇。
         若不相交，a +b = b+a 。因此相遇处是NULL
         所以有时候用公式， 会更加的简单！ 
        */

    public ListNode solution(ListNode headA, ListNode headB) {
        if (headA == null || headB == null) {
            return null;
        }
        ListNode pA = headA, pB = headB;
        while (pA != pB) {
            pA = pA == null ? headB : pA.next;
            pB = pB == null ? headA : pB.next;
        }
        return pA;
    }


    class ListNode {
        int val;
        ListNode next;

        ListNode(int x) {
            val = x;
            next = null;
        }
    }

}

